The LongPressGesture 'may-recognize' callback in commit
314137c8c was
checking if clicks were inside '_switcherList', but thumbnails shown by
switch-group are siblings of _switcherList, not children.
This caused the gesture to incorrectly identify thumbnail clicks as
'outside' clicks, closing the popup before the click could complete.
Fix by adding a _isActorOutside() helper method that subclasses can
override to check additional containers. AppSwitcherPopup now properly
checks both _switcherList and _thumbnails.
Tested on Ubuntu 25.10 with GNOME Shell 49.0. Confirmed:
- switch-group mouse clicks now work
- switch-applications and switch-windows unaffected
- clicking outside the popup still closes it correctly
- no regressions introduced
Fixes: 314137c8c9 ("switcherPopup: Move to a ClutterGesture for closing the popup")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8812
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3959>
super._onDestroy();
}
+ _isActorOutside(actor) {
+ return super._isActorOutside(actor) &&
+ !this._thumbnails?.contains(actor);
+ }
+
/**
* _select:
*
const actorAtCoords =
global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, coords.x, coords.y);
- return !this._switcherList?.contains(actorAtCoords);
+ return this._isActorOutside(actorAtCoords);
});
longPressGesture.connect('recognize', () => {
// User clicked outside
return GLib.SOURCE_REMOVE;
}
+ _isActorOutside(actor) {
+ return !this._switcherList?.contains(actor);
+ }
+
_resetNoModsTimeout() {
if (this._noModsTimeoutId !== 0)
GLib.source_remove(this._noModsTimeoutId);